[MBaaS][Data Store] Parseで簡単モバイルバックエンド構築 – 【データストア基本】
Data Store概要
Parseでは通常のRDBと同じような型を持ったデータを使って、データストアとして使うことが出来ます。
無料で使えるStorageの容量は1GBとなっています。
概要はこちら - Data & Security
概念としてはほぼ同じなので分かりやすいのですが、一部特殊なデータの型があるため、少しだけ注意が必要です。
クラス
RDBでテーブルに相当するものは、Parseでは「クラス」と呼ばれます。
デフォルトで便利なクラスもいくつか用意されています。
Custom
Class names must only contain numbers, letters, and underscore, and can only begin with a letter.
汎用クラス。データを保存する場合はこれを使って好きなデータ定義を作りましょう。
クラス名には数値、文字、アンダースコアが使える模様
User
The User class is a special class that can be authenticated, allowing users of your app to log in, sign up, and more.
ユーザーを管理するテーブルを作ります。主にユーザー認証に使います。
サインアップ、ログインすると自動的に作られます
Installation
The Installation class is a special class that stores push notification subscriptions for each device running your app.
Push通知を使う時に端末情報を管理するテーブルはこちら
Role
The Role class is a special class that allows you to specify groups of users with shared permissions.
ユーザーをまとめてグループとして管理するテーブルはこちら
Product
The Product class is a special class that stores your in-app product data.
プロダクトのデータを保存する・・・?
デフォルトで初めから設定される項目
これらのクラスは共通して以下のカラムを持つことになります。(生成時に強制的に作成される)
これらは変更、削除ができないカラムなのでご注意あれ。カラムの細かい説明は次項にて。
objectId
アイテムひとつひとつに割り当てられる一意なKey。文字列型。Hash値のようなランダムな値になります
createdAt
生成日時。Date型。アイテムが生成された日時が格納されます
updatedAt
更新日時。Date型。アイテムが更新された日時が格納されます
カラム
クラス内に定義されるデータは「カラム」と呼ばれます。
利用できる基本的なデータの型は次の通り。
基本的にParseのデータストアで扱うのはほとんどJSONになっていますが、型を利用して割と厳格に縛られているので意外と安全(な気がします)
String
文字列型。基本的にどんな文字列でも入る模様。
Number
数値型。負数や小数点の値も含めて四則演算できる数値などはこの型で格納するのが良い模様。
Boolean
真偽値。
Array
配列型。配列はJSONの配列となるようです。それ故中身の型はまた別
Object
オブジェクト型(JSONで表記される模様)。汎用的なオブジェクト型。
JSONで表現できる範囲でカスタムデータの定義が可能のよう
Date
日付型。JSONで表現されます。Localeなどの情報と共に各種日付に関するデータが格納されます。
Bytes
バイト型。小さめのバイナリデータのbyte配列
File
ファイル型。巨大なファイルのバイナリデータを保存する型。
これはFileを保存したデータへのPointerとなるため、実体がここに格納されるわけではない模様。
Null
Null
その他ちょっと特殊な型。この辺は次回細かく
- ACL: オブジェクトの権限(JSON)
- Pointer: オブジェクトへの関連付け。1:多の対応付けできるデータに対応
- Relation: オブジェクトへの関連付け。多:多の対応付けできるデータに対応
データの作り方
クラスなどのデータ定義の作り方はブラウザのData Browserから行うのが楽です。基本的にクラス名は大文字始まり, カラム名は小文字始まりがお作法のようです。
さらに複数の単語でなる名称は「createdAt」のようにキャメルケースで表記するのが正しいようです
作ってみる
Blogエントリーとしてデータ格納するクラスを作成してみます。
少々乱暴ですがこんな定義にしてみます。
「New Class」をクリックします
「Custom」を選択します。「Entry」というクラス名にします
追加されました。
カラムの追加
Entryクラスに必要なデータを追加していきます。「+ Col」をクリックします
「title」を追加します。Typeを「String」で選択し、Nameを「title」にします
「Create Column」をクリックすると追加されます
残りのデータもそれぞれ作っていきます
これでデータの定義は完成しました。
アクセスすることが可能に
データ定義を作っただけですが、Parseではこの時点ですでにREST APIによって基本的なデータのCRUD操作が可能になっています。
今回作成したクラスは「Entry」という名前なのでURLを作成すると以下のとおりです
- POST : https://api.parse.com/1/classes/Entry
データを新規作成 - GET : https://api.parse.com/1/classes/Entry/【objectId】
指定したobjectIdのデータを取得 - PUT : https://api.parse.com/1/classes/Entry/【objectId】
指定したobjectIdのデータを更新 - GET : https://api.parse.com/1/classes/Entry
クエリを発行してEntry内のデータを取得する(複数) - DELETE : https://api.parse.com/1/classes/Entry/【objectId】
指定したobjectIdのデータを削除
これでデータのCRUDはバッチリだれでも出来ます(セキュリティは今のところガタガタですが)
まとめ
- Parseのデータストアはクラスで定義する
- データのカラムはそれぞれ型によって厳格に縛られる
- データの作成、参照などはData Browserで行う
- ちょっと特殊な型がいくつかある
- REST APIでそのままアクセス可能
こんなもんでしょうか。
次回は、特殊な型を中心にセキュリティ方面も含めて書く予定です。その前にCloud Codeのことを書くかもしれませんが。
予定は未定
以上、Parseのデータストアの基本。